﻿using EnqueteMobile.Repository.Database;
using EnqueteMobile.Repository.Database.EntityFramework;
using EnqueteMobile.Repository.Database.EntityFramework.Repositories;
using EnqueteMobile.Repository.Database.Model;
using EnqueteMobile.Repository.Database.Model.Enum;
using EnqueteMobile.Repository.Database.RepositoriesInterfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EnqueteMobile.CmdApp
{
    class Program
    {
        private static MobilePollUnitOfWork unitOfWork;

        static void Main(string[] args)
        {
            //unitOfWork = new EnqueteMobileUnitOfWork();

            //CidadeBO cidade = FindOneCity();
            RegisterNewState();
            RegisterNewCity();
            UpdateState();
            System.Console.WriteLine("Teste!!");
            Console.ReadLine();
        }

        static Cidade FindOneCity()
        {
            MobilePollUnitOfWork uow = new MobilePollUnitOfWork();
            List<Cidade> lista_cidade = uow.CityRepository.GetCidadePorEstado(2).ToList();
            //List<BankDomicile> bdl = bd_list.ToList();

            return lista_cidade.FirstOrDefault();
        }

        static void RegisterNewCity()
        {
            using(unitOfWork = new MobilePollUnitOfWork())
            {
                Cidade cidade = unitOfWork.CityRepository.Insert("São João de Meriti", "RJ");
                unitOfWork.Commit();
            }
        }

        static void RegisterNewState()
        {
            using(unitOfWork = new MobilePollUnitOfWork())
            {
                UnidadeFederativa unidadeFederativa = unitOfWork.FederalUnitRepository.Insert("Rio de Janeiro", "RJ");
                unitOfWork.Commit();
            }
        }

        static void UpdateState()
        {
            using (unitOfWork = new MobilePollUnitOfWork())
            {
                UnidadeFederativa unidadeFederativa = unitOfWork.FederalUnitRepository.GetBySigla("RJ");
                unidadeFederativa.Comentarios = "Estado do Rio de Janeiro.";

                unitOfWork.FederalUnitRepository.Update(unidadeFederativa);
                unitOfWork.Commit();
            }
        }
    }
}